//const_iterator begin() const
//{
//	return _str;
//}
//const_iterator end() const
//{
//	return _str + _size;
//}
//string(const char* str = "")
//{
//	_size = strlen(str);
//	_capacity = _size;
//	_str = new char[_capacity + 1];
//	strcpy(_str, str);
//}
//// s2(s1)
//string(const string& s)
//{
//	_str = new char[s._capacity + 1];
//	strcpy(_str, s._str);
//	_size = s._size;
//	_capacity = s._capacity;
//}
//// s1 = s3
//string& operator=(const string& s)
//{
//	if (this != &s)
//	{
//		char* tmp = new char[s._capacity + 1];
//		strcpy(tmp, s._str);
//		delete[] _str;
//
//		_str = tmp;
//		_size = s._size;
//		_capacity = s._capacity;
//	}
//	return *this;
//}
//void insert(size_t pos, const char* str)
//{
//	assert(pos <= _size);
//	size_t len = strlen(str);
//	if (_size + len > _capacity)
//	{
//		reserve(_size + len);
//	}
//	int end = _size;
//	while (end >= (int)pos)
//	{
//		_str[end + len] = _str[end];
//		--end;
//	}
//	strncpy(_str + pos, str, len);
//	_size += len;
//}
//size_t find(const char* str, size_t pos = 0)
//{
//	const char* ptr = strstr(_str + pos, str);
//	if (ptr == nullptr)
//	{
//		return npos;
//	}
//	else
//	{
//		return ptr - _str;
//	}
//}
//string substr(size_t pos = 0, size_t len = npos)
//{
//	assert(pos < _size);
//	size_t end = pos + len;
//	if (len == npos || pos + len >= _size)
//	{
//		end = _size;
//	}
//	string str;
//	str.reserve(end - pos);
//	for (size_t i = pos; i < end; i++)
//	{
//		str += _str[i];
//	}
//	return str;
//}